# coding=utf-8
# 本题为考试多行输入输出规范示例，无需提交，不计分。
import math
import sys

"""
  假设有n张普通卡，m张ssr卡，抽到普通卡需要放回去，
  抽到ssr卡不需要放回去,抽到普通卡要1金币，抽到ssr卡
  要2金币。假设抽完ssr卡需要的金币为X，求X的期望。
"""


def getRes(n, m):
    """getRes.

    将这个问题视为一个分步骤的几何分布问题。
    剩m张ssr卡的时候，抽到ssr概率为m/(n+m),抽到所需次数
    期望为(n+m)/m。
    剩m-1张ssr卡的时候，把上面式子里的m换成m-1即可。
    Args:
        n:
        m:
    """

    res = 0
    for i in reversed(range(1, m + 1, 1)):
        res += (n + i) / i

    return res + m


if __name__ == "__main__":
    # 读取第一行的n
    line = sys.stdin.readline().strip()
    n, m = list(map(int, line.split()))
    res = getRes(n, m)
    print(res)
